home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Auge 4000
/
Auge 4000 #73 (1993-11-10)(Amiga User Gruppe Einzugsgebiet 4000).zip
/
Auge 4000 #73 (1993-11-10)(Amiga User Gruppe Einzugsgebiet 4000).adf
/
RSysV1.3
/
RSysV1_3.lha
/
RSysArexx.lha
/
fd2rsys.rexx
next >
Wrap
OS/2 REXX Batch file
|
1993-09-25
|
6KB
|
224 lines
/*
***************************************************************************
*
* Datei:
* fd2rsys.rexx
*
* Bemerkungen:
* Dieses Arexx-Programm erzeugt aus den aktuellen FD-Einträgen
* Eine für RSys lesbare Datei namens RSysLibOff.dat. Damit kann
* die Datei ganz einfach an andere AmigaOS-Versionen angepaßt werden.
*
* Erstellungsdatum:
* 25-Sep-93 Rolf Böhme
*
* Änderungen:
* 25-Sep-93 Rolf Böhme Erstellung
*
***************************************************************************
*/
PARSE ARG outputfile
OPTIONS RESULTS
IF outputfile = "" THEN outputfile = "T:RSysLibOff.dat"
/*
* Alle zu lesenden FD-Files
*/
libfd.1.name = "FD:dos_lib.fd"
libfd.2.name = "FD:exec_lib.fd"
libfd.3.name = "FD:expansion_lib.fd"
libfd.4.name = "FD:gadtools_lib.fd"
libfd.5.name = "FD:graphics_lib.fd"
libfd.6.name = "FD:icon_lib.fd"
libfd.7.name = "FD:intuition_lib.fd"
libfd.8.name = "FD:keymap_lib.fd"
libfd.9.name = "FD:layers_lib.fd"
libfd.10.name = "FD:utility_lib.fd"
libfd.11.name = "FD:wb_lib.fd"
libfd.12.name = "FD:console_lib.fd"
libfd.13.name = "FD:input_lib.fd"
alldata = 13
CR = '0A'X
commentline = "###################"
/*
* Read the Files...
*/
IF OPEN("RSysData", outputfile ,"WRITE") ~= 0 THEN DO
/*
* Datei-Header schreiben
*/
CALL MakeDate dateit
dateit = RESULT
line = commentline || CR || "# Libraryoffsets für RSys 1.3" || CR
line = line || "# " || "(Stand: " || dateit || ")"
WRITELN("RSysData", line)
/*
* Alle FD-Dateien auslesen und umformatieren
*/
DO i = 1 TO alldata
bias = 0
public = 1
closeit = 0
func = 1
j = 1
SAY "Reading " libfd.i.name "..."
/*
* Den Namen der FD-Datei auslesen und wegschreiben
*/
line = commentline || CR || "# FD-File: " || libfd.i.name
WRITELN("RSysData", line)
/*
* Den entsprechenden FD-File öffnen
*/
IF OPEN("fdfile", libfd.i.name, "READ") ~= 0 THEN DO
/*
* Den Namen der Library oder des Devices bestimmen und
* damit den Typ festlegen
*/
line = READLN("fdfile")
PARSE VAR line kennung '"' libname '"'
line = "LIBNAME = " || libname
WRITELN("RSysData", line)
IF INDEX(libname, ".device") ~= 0 THEN line = "TYP = D"
ELSE
line = "TYP = L"
WRITELN("RSysData", line)
/*
* Alle restlichen Einträge im FD-File auslesen
*/
DO UNTIL EOF("fdfile") | (closeit = 1)
line = READLN("fdfile")
SELECT
/*
* Variablenname der Library auslesen
*/
WHEN INDEX(line, "##base") = 1 THEN DO
PARSE VAR line kennung " " baselib
base = baselib
line = "BASE = " || base
WRITELN("RSysData", line)
END
/*
* Ersten Offset der Library festlegen oder
* neuen definieren
*/
WHEN INDEX(line, "##bias") = 1 THEN DO
PARSE VAR line kennung " " biasstr
bias = biasstr
END
/*
* Typ der Funktion bestimmen, öffentlich oder
* Commodore privat
*/
WHEN INDEX(line, "##public") = 1 THEN DO
public = 1
END
WHEN INDEX(line, "##private") = 1 THEN DO
public = 0
END
/*
* Ende der Funktionen einer Library oder eines
* Devices
*/
WHEN INDEX(line, "##end") = 1 THEN DO
closeit = 1
END
/*
* Eine Kommentarzeile vom FD-Eintrag in die Datei schreiben
* und zur Kontrolle auf dem Bildschirm ausgeben
*/
WHEN INDEX(line, "*") = 1 THEN DO
PARSE VAR line "*" line
IF line ~= "" THEN DO
WRITELN("RSysData", "##" || line)
SAY "#" || line
END
END
/*
* Funktion mit derem Offset auslesen
*/
OTHERWISE DO
PARSE VAR line funct "(" rest
line = "FUNCTION = " || funct || "," || bias || ","
IF public = 1 THEN line = line || "1"
ELSE line = line || "0"
WRITELN("RSysData", line)
j = j + 1
bias = bias + 6
END
END
END
/*
* Ende der Funktionenliste markieren
*/
line = "END" || CR || commentline
WRITELN("RSysData", line)
CLOSE("fdfile")
END
ELSE
SAY "Error opening file " libfd.i.name
END
CLOSE("RSysData")
END
ELSE
SAY "Error opening file " outputfile
EXIT
/*
* Diese Prozedur ermittelt das Systemdatum für den Header der
* Datei RSysLibOff.dat
*/
MakeDate : PROCEDURE
ARG ddd
address command "date >T:datefile"
succ = Open(df,"T:datefile","READ")
if succ = 0 then do
okay1 "Das war nix!"
exit 0
end
dateline = READLN(df)
close(df)
ddd = subword(dateline,2,1)
RETURN ddd